Computers on the Internet communicate with each other by sending packets according to a standard protocol suite including the TCP/IP (Transmission Control Protocol and Internet Protocol) suite.
As the usage of Internet increases, high-performance web servers or mail servers are desired that can accommodate ever-increasing service requests from many clients. Especially, what is desired is a scalable server system whose handling capacity can increase in proportion to the frequency of service requests from clients.
One way to implement such a scalable server system is to employ a high-performance single-processor server. But, this is not an economically desirable solution because one must pay a stiff price for such a single-processor high-performance system. Another way is to employ multiple servers to distribute service requests from clients. However, adding servers does not necessarily translate to increased performance because the existing protocol limits handling of service requests to only those servers specified by the clients, thereby creating a bottleneck.
Therefore, there is a need for a scalable server architecture whose performance is proportional to the client's demand.
U.S. Pat. No. 5,774,660, issued to Brendel et al. on Jun. 30, 1998, discloses a load balancer operating in a TCP/IP environment. As shown in FIGS. 10, 11A, 11B, 12, and 17 of U.S. Pat. No. 5,774,660, the load balancer and a server establish a TCP playback, i.e., TCP/connection, before the load balancer relays a packet received from a client to the server. In order to establish such a connection, each of the load balancer and the server should have a TCP/IP stack. As described above, the load balancer (i.e., a front-end server) and the server (i.e., a back-end server) establish a TCP connection so that the TCP connection between a browser (i.e., the client) and the load balancer is transferred to the TCP connection between the browser and the server. The load balancer then transfers the TCP/IP connection and a current TCP state to an assigned server (i.e., the back-end server), using TCP state migration. TCP state migration is not simply forwarding packets through as they are received. Instead the packets received are stored by the load balancer and then played back to the assigned server.
However, a service request, which is received by the load balancer, is not processed by the assigned server by sending the service request to the assigned server in a data link frame such as an Ethernet frame, without establishing a TCP/IP connection between the front-end server and the back-end server.
Therefore, there is a need for a scalable server architecture whose performance is performed without establishing a TCP/IP connection between the front-end server and the back-end server.